// 简单

// 给定一个无符号整数n， 统计其对应二进制表达式中1的个数

// 解法1： 循环按位计算， 对整数n的每一位进行按位与运算，并统计结果

function hammingWeight(n) {
    let ans = 0
    while (n) {
        ans += (n & 1)
        n = n >> 1
    }
    return ans
}

// 解法2，改进位运算
// 将n的二进制中最低位从1变为0，利用这个位运算，不断将n中最低位的1变为0，直到n变为0，其变换次数就是我们要求的结果

function hammingWeight(n) {
    let ans = 0
    while (n) {
        n &= n - 1
        ans += 1
    }
    return ans
}
console.log(hammingWeight(11))